UIStatusBarの高さについてのバッドノウハウ
概要
UIStatusBarの高さについて、奴ら(Apple)はどの瞬間にめり込むつもりなのか、探ってみた。
以下とりとめのないメモ
WindowにaddSubすると、めり込む
のは、単純にbarの分の高さを計算して置かないから。
正し、多層的にVIewを置いて、その上で回転したいケース、っていうのは発生する。
NavigationControllerとかは、その辺の高さを読む訳で、
これは勝手に読んでいる。
なので、自前のViewControllerとかに置くと、高さが足された状態で出力される。
解決策は、
X・NavBarの高さを取得して予めBaseをめり込ませておく
▲・特定のViewをaddする場合、追加後にframeを特定の位置に動かす
・共通タイミングを割り出して何かする
・その一瞬だけアプリの状態を変える
・取得を遮る
・デフォルトを弄っておき、コード中で変化させる(ファイルを見てるならこれで対処できる)
からの、
[[UIApplication sharedApplication] setStatusBarHidden:NO];
で、初期化タイミングを跨いだらOKだった。
タイミングより前だとどうなる?
インスタンス化前:アウト
addSubview前:アウト
addSubview後:OK
addSubviewの前に解放すると駄目だけど、後に解放するならOK、と。ふむ、、
ViewDidLoad後:アウト
ViewWillAppear後:アウト
ViewDidAppear後:OK
この隙間。
ViewDidAppear super前:OK
なので、ViewWillAppearでバーの存在をうやむやにすれば、行ける。
ViewWillAppearとViewDidAppearの間なので、ViewWillでhidden:YES、
ViewDidでhidden:NOとすると、何とかなる。
すげーーーーーー絶対のバッドノウハウだコレ。